home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Controls / Visual Basic Controls.iso / vbcontrol / intmail2 / nntplst.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-07-27  |  3.1 KB  |  133 lines

  1. unit nntplst;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ExtCtrls, msNNTP, msSocket;
  8.  
  9. type
  10.   TNGListDlg = class(TForm)
  11.     SelectButton: TButton;
  12.     CloseButton: TButton;
  13.     Bevel1: TBevel;
  14.     ListBox1: TListBox;
  15.     RetrieveButton: TButton;
  16.     LoadButton: TButton;
  17.     SaveButton: TButton;
  18.     OpenDialog1: TOpenDialog;
  19.     SaveDialog1: TSaveDialog;
  20.     Label1: TLabel;
  21.     CancelButton: TButton;
  22.     procedure RetrieveButtonClick(Sender: TObject);
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure LoadButtonClick(Sender: TObject);
  25.     procedure SaveButtonClick(Sender: TObject);
  26.     procedure CancelButtonClick(Sender: TObject);
  27.     procedure ListBox1DblClick(Sender: TObject);
  28.   private
  29.     { Private declarations }
  30.     procedure LinesRcvProgress(Sender: TObject; Perc, ByteCount, LineCount: LongInt);
  31.     procedure NewsgroupListToListBox;
  32.   public
  33.     { Public declarations }
  34.     NNTPClient: TmsNNTPClient;
  35.   end;
  36.  
  37. var
  38.   NGListDlg: TNGListDlg;
  39.  
  40. implementation
  41.  
  42. {$R *.DFM}
  43.  
  44. uses msDef;
  45.  
  46. procedure TNGListDlg.LinesRcvProgress(Sender: TObject; Perc, ByteCount, LineCount: LongInt);
  47. begin
  48.   Label1.Caption:=IntToStr(LineCount)+' retrieved';
  49. end;
  50.  
  51. procedure TNGListDlg.RetrieveButtonClick(Sender: TObject);
  52. var
  53.   SaveProgressHandler: TmsProgressEvent;
  54. begin
  55.   CancelButton.Enabled:=true;
  56.   LoadButton.Enabled:=false;
  57.   SaveButton.Enabled:=false;
  58.   SelectButton.Enabled:=false;
  59.   CloseButton.Enabled:=false;
  60.   SaveProgressHandler:=NNTPClient.OnTransferProgress;
  61.   NNTPClient.OnTransferProgress:=LinesRcvProgress;
  62.   try
  63.     NNTPClient.Login;
  64.     try
  65.       NNTPClient.RetrieveNewsgroupList;
  66.       NNTPClient.Logout;
  67.     except
  68.       on EmsServerError do
  69.       begin
  70.         NNTPClient.Logout;
  71.         raise;
  72.       end
  73.       else
  74.         raise;
  75.     end;
  76.     NewsgroupListToListBox;
  77.   finally
  78.     NNTPClient.OnTransferProgress:=SaveProgressHandler;
  79.     Label1.Caption:='';
  80.     CancelButton.Enabled:=false;
  81.     LoadButton.Enabled:=true;
  82.     SaveButton.Enabled:=true;
  83.     SelectButton.Enabled:=true;
  84.     CloseButton.Enabled:=true;
  85.   end;
  86. end;
  87.  
  88. procedure TNGListDlg.FormCreate(Sender: TObject);
  89. begin
  90.   Label1.Caption:='';
  91. end;
  92.  
  93. procedure TNGListDlg.NewsgroupListToListBox;
  94. var
  95.   i: Integer;
  96. begin
  97.   for i:=0 to NNTPClient.NewsgroupList.Count-1 do
  98.     ListBox1.Items.Add(NNTPClient.NewsgroupList[i].Name);
  99.   if ListBox1.Items.Count>0 then
  100.   begin
  101.     ListBox1.ItemIndex:=0;
  102.     SelectButton.Enabled:=true;
  103.   end;
  104. end;
  105.  
  106. procedure TNGListDlg.LoadButtonClick(Sender: TObject);
  107. begin
  108.   if OpenDialog1.Execute then
  109.   begin
  110.     NNTPClient.LoadNewsgroupList(OpenDialog1.FileName);
  111.     NewsgrouplistToListBox;
  112.   end;
  113. end;
  114.  
  115. procedure TNGListDlg.SaveButtonClick(Sender: TObject);
  116. begin
  117.   if SaveDialog1.Execute then
  118.     NNTPClient.SaveNewsgroupList(SaveDialog1.FileName);
  119. end;
  120.  
  121. procedure TNGListDlg.CancelButtonClick(Sender: TObject);
  122. begin
  123.   NNTPClient.Cancel;
  124. end;
  125.  
  126. procedure TNGListDlg.ListBox1DblClick(Sender: TObject);
  127. begin
  128.   if ListBox1.ItemIndex>-1 then
  129.     ModalResult:=mrOk;
  130. end;
  131.  
  132. end.
  133.